<?php

/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:        function.getloaderfiles.php
 * Type:        function
 * Name:        getloaderfiles
 * Description: Percorre diretorios recursivamente.
 *
 * -------------------------------------------------------------
 * @license GNU Public License (GPL)
 * #author Adelson Murakami dos Santos
 * -------------------------------------------------------------
 * Parameter:
 * - path   STRING = caminho no qual a funcao vai percorrer
 * - type   STRING = tipo de script que sera alocado no template
 * - fullPath BOOL = caminho que foi passado e absoluto ou relativo(opcional)
 * -------------------------------------------------------------
 * Example usage:
 *
 * {getloaderfiles paht='pathfolder' type='css|js'} 
 */

function smarty_function_getloaderfiles($param, &$smarty) {
    //verifica se existe o param path (caminho da pasta)
    if (!isset($param['path']) && !isset($param['type'])) {
        trigger_error("Erro na definicao da funcao pasta e tipo nao definidos");
        return;
    }

    //verifica se os tipos de arquivos sao css ou js
    if (strtolower($param['type']) !== 'css' && strtolower($param['type']) !== "js") {
        trigger_error("Este tipo de arquivos ({$param['type']}) e invalido. Apenas arquivos do tipo css ou js sao validos");
        return;
    }

    //por padrao o param['fullpath'] recebera o caminho absoluto do sistema
    if (!isset($param['fullPath'])) {
        $dir = ROOTPATH . $param['path'];
    } else {
        ///caso seje verdadeiro recebera o caminho absoluto do sistema
        if ($param['fullPath']) {
            $dir = ROOTPATH . $param['path'];
        } else {
            $dir = $param['path'];
        }
    }

    //verifica se o caminho passado e valido - se a pasta existe
    if (!file_exists($dir)) {
        trigger_error("Diretorio ou pasta nao encontrado");
        return;
    } else {
        $it = new RecursiveDirectoryIterator($dir);
        $listaDir = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::SELF_FIRST);
        foreach ($listaDir as $v) {
            if ($v->isFile()) {
                $backslash = str_replace("\\", "/", $v->getPathname());
                $href = str_replace($_SERVER['DOCUMENT_ROOT'], '', $backslash);
                $href = substr($href, 1);
                $stringExplode = explode(".", $v->getBasename());
                $ext = end($stringExplode);
                if (strtolower($param['type']) === 'css') {
                    if ($ext == "css") {
                        $output = "<link rel='stylesheet' style='text/{$param['type']}' href='" . URLDOMINIO . "{$href}' />";
                    } else {
                        continue;
                    }
                } else if (strtolower($param['type']) === "js") {
                    if($ext == "js"){
                        $output = "<script type='text/javascript' src='" . URLDOMINIO . "{$href}' ></script>";
                    }else{
                        continue;
                    }
                }
                echo $output . "\n";
            }
        }
    }
}
